# -*- coding: utf-8 -*-
"""
optimizer_q2_core.py
--------------------
第二问优化核心：最大化单枚烟幕的遮蔽总时长（基于解析评估核；支持单点/多点聚合口径）。

参数化（推荐）：
  θ = (x_det, y_det, t_det, tau)
  速度由 v = ||(x_det,y_det) - R0|| / t_det 隐式决定，并受 [v_min, v_max] 约束。
  释放时刻 t_rel = t_det - tau ≥ 0。

搜索器：
  - 对 t_det 做 1D 黄金分割（全域 + 小窗）
  - 对 (x_det, y_det, tau) 做 TRPS（±步长邻域，步长自适应缩小）
  - 无解时用软目标 J_soft 牵引，找到 L>0 后切回真实目标

评估口径：
  - "point"：代表点 LoS（center/top/bottom 三选一，默认 center）
  - "aggregate"：重要点 + 随机侧面点；线扫聚合，当覆盖度 ≥ eta 记遮蔽

将本文件与已存在的 `intervals_point_los_analytic_fixed` 放在同一工程中即可使用。
"""

from __future__ import annotations
from dataclasses import dataclass,field
from typing import Tuple, List, Dict, Any, Optional, Callable, Literal
import numpy as np
import math
import random

from src.core.analytical import segment_intersects_sphere, intervals_point_los_analytic_fixed

def evaluate(
    
):
    ...